Import("utils.js")
Import("ggUtils.js")
Import("utils_fui.js")

var is_gj_gg = false
var DOU_YIN = 'com.ss.android.ugc.aweme'
var current账号 = '32019099152'
var allShopTitle = []
var index购物单 = ['一', '二', '三', '四', '五', '六', '七', '八', '九',
    '十', '十一', '十二', '十三', '十四', '十五', '十六', '十七', '十八', '十九',
    '二十', '二十一', '二十二', '二十三', '二十四', '二十五', '二十六', '二十七', '二十八', '二十九', '三十']

if (!isBlueMode()) {
    require("Bear_plugin.js")
    if (!OTG_init()) {
        logSleep('OTG初始化未完成', 5)
        stopAll()
    }
}

// hid.home()

function skip_主界面的弹窗_DYJSB() {
    agentOrHidClick(ocrTextMoreInRegion(0, 0.5, 1, 0.8, '拒绝'))
    agentOrHidClick(ocrText('忽略提醒', '以后再说', '禁止', '关闭', '不再提', '再提醒'))

    //红包弹窗
    var detects = opencv.findImagesEx('图色528603.cv');
    if (detects != null) {
        agentOrHidClick(detects[0])
    }
}

startApp(DOU_YIN, true)
sleep.second(1)
skip_主界面的弹窗_DYJSB()

// 准备进入购物菜单
agentOrHidClickAbsoultX(ocrTextMoreInRegion(0, 0.8, 1, 1, '首页', '消息', '商城'), screen.percentToWidth(1) - 100)
// 读取账户名称
// ocrTextTrue('抖音号')
var flag账户名称 = ocrWaitForText('抖音号')
if (flag账户名称 == null) {
    var num编号 = getMaxNumByStr(ocrGetAllStr())
    current账号 = num编号
} else {
    current账号 = getDectFloatNumber(flag账户名称)
}


log('当前账号' + current账号)
sleep.second(2)
clickOffectY(0.75, 1, 80)

var AAA买买买 = ocrWaitForText('AAA买买', 'A买')
if (!AAA买买买) {
    moveUpSmaller2FindWidUntilNoChange((findView) => {
        AAA买买买 = findView
    }, null, 'A买')
}

// 进入消息圈
agentOrHidClick(AAA买买买)
ocrWaitForText('¥')

// 找到今日的标识
var monthdat = getDayOfMonth()
SystemPrint.log(monthdat)
move2TopSmallFindStop(30, 1000, monthdat)
if (ocrText(monthdat)) {
    agentSwipSmallDown()
    sleep.second(1)
    if (ocrText(monthdat)) {
        agentSwipSmallDown()
        sleep.second(1)
    }
}



// for (let i = 0; i < 50; i++) {
// if (getExcuteFuncTimes('enter购物单failtimes') > 2) {
//     break;
// }

var i = 0
var current店铺名称 = ''
var current商品名称 = ''
var failtiems = 0

// 回到购物列表
function back2Main(i) {
    if (ocrText('发送消息', 'AAA', `第${index购物单[i]}单`, `第${i + 1}单`)) {
        return
    }

    agentOrHidback()
    sleep.second(3)
    if (ocrText('加入购物车', '进店', '立即购买')) {
        agentOrHidback()
        sleep.second(3)
        if (!ocrText('发送消息', 'AAA', `第${index购物单[i]}单`, `第${i + 1}单`)) {
            if (ocrText('加入购物车', '进店', '立即购买')) {
                agentOrHidback()
                sleep.second(3)
                if (!ocrText('发送消息', 'AAA', `第${index购物单[i]}单`, `第${i + 1}单`)) {
                    if (ocrText('加入购物车', '进店', '立即购买')) {
                        agentOrHidback()
                        sleep.second(3)
                    }
                }
            }
        }
    }
}

function startShopping(i, direct, isWhile, times) {
    if (times == undefined) times = 0
    if (times >= 5) return
    SystemPrint.log('startShopping')
    sleep.second(1)
    if (ocrText('已抢光', '更换地址', '不支持配送', '去看看其他', '商品已抢')) {
        addExcuteFuncTimes('shop购物单failtimes' + current商品名称, 9)
        // back2Main(1)
        back2Main(i)
        return
    }

    if (ocrText('已达购买上限', '不可购买')) {
        setExcuteFunc(`shopping_${current商品名称}_${current账号}`)
        // back2Main(1)
        back2Main(i)
        return
    }

    // 和获取商品名称
    if (!isWhile) {
        // SystemPrint.log('ocrWaitForText => 已售')
        // var flag已售 = ocrWaitForText('已售')
        // if (flag已售) {
        //     // 2080-1845
        //     var findRect = flag已售.getRealRect()
        //     var alltext = ocrGetAllStrInRegion(0, screen.heightToPercent(findRect.getBottom() + 25), 1, screen.heightToPercent(findRect.getBottom() + 200))
        //     SystemPrint.log('上一个商品名称 : ' + up商品名称)
        //     SystemPrint.log('当前商品名称 : ' + alltext)
        //     SystemPrint.log(JSON.stringify(allShopTitle))
        //     current商品名称 = alltext

        //     var present相似度 = calculateSimilarityPercentage(up商品名称, current商品名称)
        //     if (present相似度 > 75) {
        //         SystemPrint.err('是同一商品??')
        //         back2Main()
        //         setExcuteFunc('shop_某个方向上是同一个单子' + '_' + i + '_' + direct)
        //         return
        //     }

        //     // 判断是否已经买过了!!
        //     // allShopTitle = ['奶白色元宝免垃圾袋通用免撕型家用客厅办公室卧室卡通塑料垃圾袋']
        //     // current商品名称 = '奶白色元宝免垃圾袋通用免撕型家用客厅办公室卧室卡通塑料垃圾袋'
        //     var hasShopping = false
        //     if (allShopTitle.length > 0) {
        //         for (let j = 0; j < allShopTitle.length; j++) {
        //             if (calculateSimilarityPercentage(allShopTitle[j], current商品名称) > 75) {
        //                 hasShopping = true
        //                 break
        //             }
        //         }
        //     }

        //     if (hasShopping) {
        //         SystemPrint.err('已经买过的商品??')
        //         back2Main()
        //         setExcuteFunc('shop_某个方向上是同一个单子' + '_' + i + '_' + direct)
        //         return
        //     }

        //     allShopTitle.push(current商品名称)
        // } else {
        //     SystemPrint.err('读取名称失败???')
        //     back2Main()
        //     return
        // }


        // 获取店铺的名称
        expectView(() => {
            //找图返回目标数组
            var detects店铺 = opencv.findImagesEx('图色684827.cv');
            if (detects店铺 != null) {
                return detects店铺[0]
            }
            return null
        }, () => {
            agentSwipSmallDown()
            sleep.second(3)
        }, (findView) => {
            var findRect = findView.getRealRect()
            var alltext = ocrGetAllStrInRegion(0, screen.heightToPercent(findRect.getTop() - 100), 0.7, screen.heightToPercent((findRect.getBottom() + findRect.getTop()) / 2))
            SystemPrint.log(alltext)
            current店铺名称 = alltext
            // 写入某账号某店铺已购买
            setExcuteFunc(`shopping_${current店铺名称}_${current账号}`)
        }, null, 5)
    }

    // 判断是否是禁购店铺
    // current店铺名称

    var shop购买 = ocrText('加入购物车', '进店', '立即购买')
    if (!shop购买) {
        back2Main(i)
        return
    }
    agentOrHidClickAbsoultX(shop购买, screen.percentToWidth(1) - 150)

    // 入股需要选择规格
    if (ocrText('请选择', '选择规格')
        || getDectFloatNumber(ocrTextMoreInRegion(0, screen.heightToPercent(screen.percentToHeight(1) - 150), 0.75, 1, '¥')) > 0.6) {
        back2Main(i)
        addExcuteFuncTimes('shop购物单failtimes' + current商品名称)
        return
    }

    // if (!isWhile) {
    //     up商品名称 = current商品名称
    // }

    // 立即支付
    var flag = ocrWaitForText('立即支付')
    // 判断价格是否正常
    if (getDectFloatNumber(flag) <= 0.6) {
        // 判断是否是支付宝
        if (!ocrText('支付宝')) {
            // agentSwipSmallDown()
            moveUpSmaller2FindWidUntilNoChange(() => { }, () => {
                agentOrHidClick(ocrText('更多支付方式'))
            }, '支付宝')
            sleep.second(2)
            if (!ocrText('支付宝')) {
                // 无法支持支付宝付款
                addExcuteFuncTimes('shop购物单failtimes' + current商品名称)

                back2Main(i)
                return
            }
        }

        // 判断勾选的是不是支付宝
        agentOrHidClick(ocrText('支付宝'))

        // 开始切换地址

        // for (let k = 0; k < 20; k++) {
        //     if (failtiems >= 2) {
        //         break
        //     }

        // }
        //找图返回目标数组
        var detects地址 = opencv.findImagesEx('图色228582.cv');
        if (detects地址 != null) {
            agentOrHidClick(detects地址[0])
            moveUpSmaller2FindWidUntilNoChange((findView) => {
                agentOrHidClick(findView)

                var zfflag = ocrWaitForText('立即支付')
                if (getDectFloatNumber(zfflag) <= 0.6) {
                    agentOrHidClick(zfflag, 0)
                    if (!ocrWaitForMoreTextMillisecond('当前下单', '请稍后')) {
                        var zfFlag = ocrWaitForText('免密支', '密支付', 3, 1)
                        if (zfFlag == null) {
                            clickOffectY(0.5, 1, 250)
                        } else {
                            agentOrHidClick(zfFlag)
                        }

                        setExcuteFunc(`shopping_${current商品名称}_${current账号}`)
                        // setExcuteFunc(`shopping_${current商品名称}_${current账号}_${times}`)
                        // setExcuteFunc('shopping已经购买过了' + '_' + i + '_' + current账号)

                        agentOrHidClick(ocrWaitForText('完成', 3, 1))


                        backUntilFindView(() => ocrText('进店', '加入购物车'), 2, 5)

                        if (failtiems < 2) {
                            startShopping(i, direct, true, times + 1)
                        }
                    }

                }

            }, () => {
                failtiems = failtiems + 1
            }, `${times + 1}号`)

        }
    }

    back2Main(i)
}


// 商品名 + 账号名 /或 店铺名 + 账号名 已经购买或者失败的跳过

// 循环向下移动, 直到界面不再变化
var maxTimes = 100
var times = 1
while (true) {
    // todo
    // 获取所有的商品
    var isRight位置 = true
    var allDects = ocrGetAllStrsByText('¥')

    // ocrTextTrue('¥0')
    SystemPrint.warn('共找到: ' + allDects.length + '个')
    for (let n = 0; n < allDects.length; n++) {
        var target = allDects[n]
        // 判断目标是否过高, 如果是小幅度向上滑动
        var findRect = target.getRealRect()
        if (screen.heightToPercent(findRect.getTop()) < 0.2) {
            isRight位置 = false
            break
        }
    }

    var rgbs = get界面采样点()
    if (isRight位置) {
        for (let n = 0; n < allDects.length; n++) {
            //  var target = allDects[2]
            var target = allDects[n]
            var jb = getDectFloatNumber(target)
            if (jb <= 0.6) {
                // 获取商品名称
                var findRect = target.getRealRect()
                var alltext = ocrGetAllStrInRegion(0, screen.heightToPercent(findRect.getTop() - 160), 0.7, screen.heightToPercent(findRect.getTop()))
                SystemPrint.log('当前商品名称 : ' + alltext.trim().substr(0, 6))
                // SystemPrint.log(findRect.getTop())String.substr(0)
                // SystemPrint.log('df  sdf sssff'.length)
                // current商品名称 = alltext
                // if (alltext.length > 6) {
                //     current商品名称 = alltext.trim().substr(0, 6)
                // }
                current商品名称 = alltext.trim().substr(0, 6)


                // 判断是否无法买入了或者不支持支付宝的, 已经买过的 直接跳过
                if (getExcuteFuncTimes('shop购物单failtimes' + current商品名称) < 2 && !hasExcuteFunc(`shopping_${current商品名称}_${current账号}`)) {
                    // 判断是否出现过/买过
                    var hasShopping = false
                    if (allShopTitle.length > 0) {
                        for (let j = 0; j < allShopTitle.length; j++) {
                            if (calculateSimilarityPercentage(allShopTitle[j], current商品名称) > 75) {
                                hasShopping = true
                                break
                            }
                        }
                    }

                    if (hasShopping) {
                        SystemPrint.err('已经买过的商品??')
                        // back2Main()
                        // setExcuteFunc('shop_某个方向上是同一个单子' + '_' + i + '_' + direct)
                    } else {
                        allShopTitle.push(current商品名称)
                        agentOrHidClick(target)
                        ocrWaitForMoreTextMillisecond('进店', '加入购物车', '无理由退货')

                        //找图返回目标数组
                        var detects = opencv.findImagesEx('图色922295.cv');
                        if (detects != null) {
                            // 成功进入购物界面
                            startShopping(i, 'up')
                        } else {
                            back2Main(i)
                            // return
                        }
                    }
                } else {

                    SystemPrint.warn(current商品名称 + '不支持买入或者已经买过了!')
                }
            } else {
                SystemPrint.err(current商品名称 + '金额太贵了!')
            }

        }
        agentSwipDown()
        sleep.millisecond(2000)
    } else {
        agentSwipSmallerUp()
        sleep.second(2)
    }

    maxTimes = maxTimes - 1
    if (maxTimes < 0) {
        // sleep.second(30)
        // maxTimes = 100
        break
    }

    if (check界面是否不再变化(rgbs)) {
        times = times + 1
        printinfoOld('界面不再变化!!!')
        if (times >= 2) {
            break
        }
    }
}

// 切换账号 //切换应用




// }

// ocrTextTrue('4号')
// addExcuteFuncTimes('enter购物单failtimes', 0)






